package com.ehotting.mqbd.api.bean;

import com.ehotting.eaf.netty.domain.DataAble;
import com.ehotting.mqbd.api.enums.*;

import java.io.Serializable;

public interface MQDataAble<R extends DataAble, A extends DataAble> extends Serializable {

    public String getAction();

    public String getSerial();

    public TopicEnum getTopic();

    public String getModule();

    public String getMsg();

    public String getAgentId();

    public void setAgentId(String agentId) ;

    public String getConsumerHost();

    public String getLocalHost();

    public String getDirection();

    public String getTime();

    public String getSolverIp();

    /***
     * 求解器节点IP
     * @param solverIp
     */
    public void setSolverIp(String solverIp);

    public String getState();

    public void setDirection(String direction);

    public ProtocolTypeEnum getProtocolType();

//    public Class getClazz();

    public void setState(String state);

    public void setMsg(String msg);

    public void setTopic(TopicEnum topic);

    public void setLocalHost(String localHost);

    public void setConsumerHost(String sourceHost);

    public Boolean isSync();

    public void setSync(Boolean sync);

    public String getAuthorization();

    public void setAuthorization(String authorization);

    public Boolean isLogRequest();

    public Boolean isLogResponse();

    public Boolean isSendRequest();

    public Boolean isSendResponse();

    public Class<?> getRequestClazz() ;

    public Class<?> getResponseClazz();


    public void setRequestClazz(Class<?> requestClass) ;

    public void setResponseClazz(Class<?> responseClazz);


    public String getRequestIndex();

    public void setRequestIndex(String requestIndex) ;

    public String getResponseIndex();

    public void setResponseIndex(String responseIndex);

    public SendTypeEnum[] getSendType();

    public void setSendType(SendTypeEnum[] sendType);


    public <R> R getRequest();

    public <A> A getResponse();

    public Class<?> getClazz();

    public void loadClazz() ;

    public String getRequestString();

    public void setRequestString(String requestString);

    public String getResponseString();

    public void setResponseString(String responseString) ;


    public boolean isAutoTopic();

    public void setAutoTopic(boolean autoTopic);

    public SolveStepEnum getSolveStep();

    public void setSolveStep(SolveStepEnum solveStep);

    public String getMsgId();

    public void setMsgId(String msgId) ;


    public MQDataPushModelEnum getPushModel();

    public void setPushModel(MQDataPushModelEnum pushModel);

    public boolean isAutoPush();

    public void setAutoPush(boolean autoPush);



}